package com.xxxx.yoyo.service.impl;

import java.util.List;

import com.xxxx.yoyo.bean.User;
import com.xxxx.yoyo.dao.IUserDao;
import com.xxxx.yoyo.dao.impl.UserDaoImpl;
import com.xxxx.yoyo.service.IUserService;
import com.xxxx.yoyo.util.DBUtils;
import com.xxxx.yoyo.util.SafeUtil;

public class UserServiceImpl implements IUserService {

	private IUserDao userDao = new UserDaoImpl();
	
	
	/**
	 * 根据 用户名 获取用户
	 * @param username 用户名
	 * @return 返回查到的用户
	 */
	@Override
	public User getUserByUsername(String username) {
		User user = userDao.selectUserByUsername(username);
		return user;
	}

	/**
	 * 添加用户
	 * @param user 要添加的用户
	 * @return 如果添加失败返回false, 添加成功返回true
	 */
	@Override
	public boolean addUser(User user) {
		//获取用户的明文密码
		String password = user.getPassword();
		//加密,并获取加密后的密码
		String pwd = SafeUtil.encode(password);
		//更新user的密码
		user.setPassword(pwd);
		int result = userDao.insertUser(user);
		if(result == 1) {//添加成功
			return true;
		}else {//添加失败
			return false;
		}
	}

	/**
	 * 根据 用户名和密码 查询用户
	 * @param username 用户名
	 * @param password 密码
	 * @return 返回查到的用户
	 */
	@Override
	public User getUserByUsernameAndPassword(String username, String password) {
		//对密码加密, 使用加密后的密码查询
		String pwd = SafeUtil.encode(password);
		User user = userDao.selectUserByUsernameAndPassword(username, pwd);
		return user;
	}

	/**
	 * 更新用户信息
	 * @param user 用户信息
	 * @return 如果更新成功返回true, 否则返回false 
	 */
	@Override
	public boolean updateUser(User user) {
		int row = userDao.updateUser(user);
		if(row == 1) {//更新成功
			return true;
		}else {//更新失败
			return false;
		}
	}

	/**
	 * 根据用户id查询用户
	 * @param userId 用户id
	 * @return 返回查到的用户
	 */
	@Override
	public User getUserById(int userId) {
		User user = userDao.selectUserById(userId);
		return user;
	}

	/**
	 * 获取用户列表
	 * @return 返回获取到的用户列表
	 */
	@Override
	public List<User> getUserList() {
		List<User> userList = userDao.selectUserList();
		return userList;
	}

	/**
	 * 根据页码和每页条数获取用户列表
	 * @param page 页码
	 * @param size 每页条数
	 * @return 返回获取到的用户列表
	 */
	@Override
	public List<User> getUserList(int page, int size) {
		List<User> userList = userDao.selectUserList(page, size);
		return userList;
	}

	/**
	 * 获取用户数量
	 * @return 返回用户的数量
	 */
	@Override
	public long getUserCount() {
		long count = userDao.selectUserCount ();
		return count;
	}

}
